#!/usr/bin/env bash
#=============HEADER================================================|
#AUTOR
#  Jefferson Rocha <lrcjefferson@gmail.com> 
#
#PROGRAM
#  SCM - Simple Compreension Mass
#
#DESC
#
#TESTED SHELLS:
# Bash: version 4.3.48
# Ksh:  version 93u+
# Zsh:  version 5.2
#
#CHANGELOG
#===================================================================|

#=========VARS============================|
#==CONFIGURATIONS
# Create MD5 file?
MD5="0" # 0 OFF | 1 ON
readonly NAME="SCM"
readonly VERSION="0.1"
#==Colors
bold=$(tput bold)
fg_error=$(tput setaf 1)
fg_ok=$(tput setaf 2)
fg_end=$(tput sgr0)
#=========================================|

#=========TESTES==========================|
deps=("gzip" "tar" "md5gsum") # program dependencies
for x in "${deps[@]}"; {
    if ! type -p "${x}" 1> /dev/null 2>&1; then
        # MD5 enabled and installed on system?
        if [ "${x}" = "${deps[2]}" ] && [ "$MD5" = "1" ] ; then
            printf "${bold}${fg_error}U NEED INSTALL '${x}' FOR CONTINUE;${fg_end}\n"
            exit 1
        else
            continue
        fi
        printf "${bold}${fg_error}U NEED INSTALL '${x}' FOR CONTINUE;${fg_end}\n"
    fi
}
#=========================================|

#========FUNCTIONS========================|
USAGE(){
cat <<EOH
   USAGE HERE.
EOH

exit 0

}

_COMPRESS(){
# Local variables:
typeset INPUT_TYPE
typeset ARCHIVE

    until [ -z "$1" ]; do # Main loop
        [ -d "$1" ] && INPUT_TYPE="DIRECTORY" || INPUT_TYPE="ARCHIVE"  # Input type.
            [ ! -w "$1" ] && { printf "NO PERMISSION!"; continue ;}    # Have permission write?
            ARCHIVE="${1/%\//}-${INPUT_TYPE}.gz"
            if tar cf - "$1" | gzip -9 > "${ARCHIVE}"; then
               [ "$MD5" = "1" ] && md5sum "${ARCHIVE}" > "${ARCHIVE}.md5" # ON? Generate .md5 file
                printf "${bold}${fg_ok}'${1}'......\t[OK]${fg_end}\n"
            else
                printf "${bold}${fg_error}'${1}......\t[ERROR]'${fg_end}\n"
            fi
            shift # Downnn!
    done
}
#=========================================|

# no params? go function.
[ "$#" = "0" ] && USAGE

#################
# MAINLAND here #
#################
if [ "$1" = "compress" ]; then
    shift # Palmeiras
    if [ -z "$1" ]; then
        USAGE
    else
        _COMPRESS "$@"
    fi
elif [ "$1" = "usage" ] || [ "$1" = "help" ]; then
    USAGE
fi







